package main
import (
	"fmt"
	"encoding/json"
)
//json序列化时 tag 的使用
//在使用struct进行序列化时，会直接使用 字段名 来作为 key，如果不想用字段名作为 key值，可以通过 tag 标签进行修改,如下操作
func main(){
	testStruct()
}
/*
序列化结果：{"p_name":"fmx","p_age":22,"p_birthday":"1999-06-24","p_sal":12000}
*/
type Person struct{
	Name string `json:"p_name"`    //如果直接将 字段名 改成 小写 ，那么会报错，因为json.Marshal(&person)会调用这些字段，但是小写开头字段是无法被json包访问到（跨包访问）
	Age int	`json:"p_age"`  //反射机制原理
	Birthday string `json:"p_birthday"`
	Sal float64 `json:"p_sal"`
}
//将这个结构体进行序列化！
func testStruct(){
	person := Person{
		Name : "fmx",
		Age : 22,
		Birthday : "1999-06-24",
		Sal : 12000.0,
	}
	//通过 func Marshal(v interface{}) ([]byte, error) 进行序列化！
	data , err := json.Marshal(&person)
	if err != nil{
		fmt.Println("序列化失败！Error：",err)
	}
	fmt.Printf("序列化结果：%v\n",string(data))
}
